Skip to main content
Version: 1.0.0

dataHandling

Data Handling

DataModel provides a very user-friendly API to handle invalid data.

DataModel parses all invalid data to be an instance of Invalid. This eases out the checks in the user's code.

By default if the following data is present, it is automatically identified as invalid:

  • null
  • undefined
  • NaN
  • 'null',
  • 'undefined',
  • 'NaN',
  • 'nil',
  • 'na',
  • ''

1. static setInvalids

Syntax: DataModel.setInvalids(listOfInvalid)
parameters:
- listOfInvalid:
required: true
type: Array<string>
descriptions: invalid sring values to add to the above list

2. static unsetInvalids

Syntax: DataModel.unsetInvalids(listOfInvalid)
parameters:
- listOfInvalid:
required: true
type: Array<string>
descriptions: invalid sring values to remove from the above list

3. static defaultInvalidValue

Syntax: DataModel.defaultInvalidValue(invalidParam)
parameters:
- invalidParam:
required: true
type: string
descriptions: Set actual value of the Invalid instance

4. static isInvalid

Syntax:  DataModel.defaults.getInvalidStore.isInvalid(value)
parameters:
- value:
required: true
type: string
description: Checks if the string values exist in the list of Invalids

5. value

Syntax: value()

Overwrites existing value method for a field

Invalid.value()

Returns: The actual value of the Invalid instance

6. toString

Syntax: toString()
Invalid.toString()

Returns: The stringified value of the Invalid

const Datamodel = muze.DataModel;
const data = [
{ words: null, frequency: 2 },
{ words: undefined, frequency: null },
{ words: "wonder", frequency: 12 },
{ words: "wonderful", frequency: "yes" },
];
const schema = [
{ name: "words", type: "dimension" },
{ name: "frequency", type: "measure", defAggFn: "avg" },
];

Datamodel.setInvalids(["wonder"]);
let formattedData = await Datamodel.loadData(data, schema);
let dm1 = new Datamodel(formattedData);

Datamodel.unsetInvalids(["wonder"]);
formattedData = await Datamodel.loadData(data, schema);
let dm2 = new Datamodel(formattedData);

Datamodel.defaultInvalidValue("Not Applicable");
formattedData = await Datamodel.loadData(data, schema);
let dm3 = new Datamodel(formattedData);

Printing the output dm1, dm2, dm3 gives:

DM1

wordsfrequency
_invalid2
_invalidNaN
_invalid12
wonderfulNaN

DM2

wordsfrequency
_invalid2
_invalidNaN
wonder12
wonderfulNaN

DM3

wordsfrequency
Not Applicable2
Not ApplicableNaN
wonder12
wonderfulNaN